#ifndef INCLUDED_CHARACTERSTATE_H
#define INCLUDED_CHARACTERSTATE_H

//====================================================================================================
// Filename:	CharacterState.h
// Created by:	Ali Talhouni
//====================================================================================================

//====================================================================================================
// Includes
//====================================================================================================

#include <SGE.h>
using namespace SGE;

//====================================================================================================
// Forward Declarations
//====================================================================================================

class fighter;

//====================================================================================================
// Class Declarations
//====================================================================================================

class CharacterState
{
public:
	CharacterState(fighter* pOwner, const char* name) : mpOwner(pOwner), mName(name) {}
	virtual ~CharacterState() {};

	virtual void Load(FILE* pFile) = 0;
	virtual void Unload() = 0;
	virtual void Update(float deltaTime) = 0;
	virtual void Render(const SVector2& offset) = 0;

	virtual void Enter() = 0;
	virtual void Exit() = 0;

	virtual SRect GetBoundingBox() const = 0;
	virtual SRect GetDamageBox() const = 0;

	const char* GetName() const	{ return mName; }

protected:
	SGE_Sprite mSprite;
	fighter* mpOwner;
	int mStateCount;
	const char* mName;
};

#endif // #ifndef INCLUDED_CHARACTERSTATE_H